/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lisp;

/**
 *
 * @author luisorozco
 */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.TreeMap;
import java.util.LinkedList;

public class Lisp {
        
        private String leer;

        public void interpretar()
        {       
                int i=0;
                Listas evaluador= new Listas();
                while(true)
                {
                    if(i==0){
                        System.out.print("        Lisp -->("+i+"): ");
                    }
                    
                    if(i>0){
                        System.out.print("        Break -->("+i+"): ");
                    }
                        InputStreamReader input = new InputStreamReader(System.in);
                        BufferedReader reader = new BufferedReader(input);
                
                        try
                        {
                                leer = reader.readLine();
                        }
                        
            /**
                         while (!comandos.equals("(salir)"))
            {
                System.out.print("[" + numIns + "]> ");
                comandos = comando.nextLine();
                LispList lista = LispParser.parse(comandos);
                
                LispList listaresultado = resultado.evaluate(lista);
                listaresultado.printLispList();
                numIns++;
            }
                         */
                        
                        
                        catch(Exception e){
                            System.out.println("Adios!");
                        }
                        
                        
        {
            
        
        } 
        
                        if((leer.compareTo("salir")==0) || (leer.compareTo("exit")==0) )
                        {
                                Portada adios=new Portada();
                                
                                adios.adios();
                                break;
                        }
                        
                        String resultado= evaluador.Operar(leer);
                        
                        if(resultado==null)
                        {
                                resultado="Error intente otra vez!";
                                
                        }
                        
                        
                        System.out.println("        -->  " + resultado);
                        
                        i++;
                }
        }
        
          Lisp()
        {
                leer="";
                interpretar();
        }
          
          
        public static void main (String args[])
        {
            Portada hola=new Portada();
            
            hola.hola();
            Lisp interprete = new Lisp();
        }
}
